package ;

#if macro
import scuts.Overload;
#end

#if !macro extern #end
class Simple {
  

  @:scutsOverload(
    function (a:String, b:String):Simple {},
    function (a:Float):Simple {}
  )
  @:macro public static function construct (?exprs:OExprArr)
  {
    return Overload.applyStaticConstruct(exprs);
  }
  
  
  
  @:scutsOverload(
    function (params:VarArgs<Int>):String {},
    function (a:String, b:String):String {},
    function (a:Float):{x:String} {}
  )
  @:macro public static function foo (?exprs:OExprArr)
  {
    return Overload.applyStatic(exprs);
  }
  
  
  @:scutsOverload(
    function (a:String, b:String):String {},
    function (a:Int):String {},
    function (a:Float):Int {}
  )
  @:macro public function fooInstance (exprs:OExprArr)
  {
    return Overload.applyInstance(exprs);
  }
  
  @:scutsOverload(
    function (args:VarArgs<String>):String {}
  )
  @:macro public function fooInstanceVarArgs (exprs:OExprArr)
  {
    return Overload.applyInstance(exprs);
  }
  
  
  
}
